// 调用函数

let add = function( a , b ) {
    console.log( `${a} + ${b}` );
    return a + b ;
}

// 通过函数名来调用函数
add( 100 , 2 );

// 借助于 Function.prototype.call( thisArg , ...params ) 来调用
add.call( null , 100 , 200 );

// 借助于 Function.prototype.apply( thisArg , paramArray ) 来调用
add.apply( null , [ 100 , 200 ] );

let sum = add.bind( null );
sum( 20 , 30 );

// 调用方法
let stu = {
    add( a , b ){
        console.log( `${a} + ${b} = ${ a + b }` , ", this: " , this );
        return a + b ;
    }
}

console.log( stu.add( 1 , 2 ) );

let x = { id: 1 , name: '大白兔' }
console.log( stu.add.call( x , 2 , 3 ) );
console.log( stu.add.apply( x , [2 , 3 ]) );
console.log( stu.add.bind( x )( 2 , 3 ) );